package cn.ecut.contoller;

import cn.ecut.model.Msg;
import cn.ecut.model.User;
import cn.ecut.service.IuserInterface;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.UnsupportedEncodingException;
import java.util.List;
import java.util.logging.Logger;


//
@Controller
public class YuanGongController {

    @Autowired
    private IuserInterface userService;
    private Logger logger = Logger.getLogger("员工");

    //跳转到注册页面
    @RequestMapping("/register")
    public String register() {
        return "register";
    }

    @RequestMapping("/toRegister")
    public String toRegister(User user) {

        // ...

        return "register";
    }


    /**
     * 跳转到登录界面
     *
     * @return
     */
    @RequestMapping("/login")
    public String login() {
        return "login";
    }


    /**
     * 用户登录
     *
     * @param username     用户名
     * @param userPassword 密码
     * @param yzm          验证码
     * @param session      。
     * @return
     */
    @ResponseBody
    @RequestMapping("/toLogin")
    public Msg toLogin(String username,
                       String userPassword,
                       String yzm,
                       HttpSession session
    ) {
        Msg msg = new Msg();

        String myYzm = (String) session.getAttribute("CHECKCODE_SERVER");
        session.removeAttribute("CHECKCODE_SERVER");//验证码只能使用一次（安全）
        if (myYzm == null || !myYzm.equalsIgnoreCase(yzm)) {
            msg.setFlag(false);
            msg.setMsg("验证码不正确");
            return msg;
        }

        if (username == null || username.length() == 0 || userPassword == null || userPassword.length() == 0) {
            msg.setMsg("用户名或密码不能为空！！！");
            msg.setFlag(false);
            return msg;
        }
        //查询
        User loginUser = userService.loginUser(username, userPassword);
        if (loginUser != null) {
            msg.setMsg("登陆成功");
            msg.setFlag(true);
            logger.info("用户：" + loginUser.getUsername() + "登陆成功");
            session.setAttribute("user", loginUser);//保存用户信息到session
            return msg;
        } else {
            msg.setMsg("用户名或密码错误");
            msg.setFlag(false);
            return msg;
        }
    }

    /**
     * 获取登录人的名称
     *
     * @return 用户名字
     */
    @ResponseBody
    @RequestMapping("getUsername")
    public String selectUserName(HttpSession session) {

        User user = (User) session.getAttribute("user");
        System.out.println(user.getUsername());
        return user.getUsername();
    }

    /**
     * 退出并跳转到登录界面
     *
     * @return
     */
    @RequestMapping("exit")
    public String exit(HttpSession session) {
        //销毁session
        session.invalidate();
        //重定向到登录
        return "redirect:/login";
    }

    @RequestMapping("toXinXi")
    public String toYuanGongXinXi() {
        return "";
    }

    /**
     * 查询所有员工信息返回到员工信息显示界面
     * *由信息界面加载完毕后发生ajax查询
     *
     * @return
     */
    @ResponseBody
    @RequestMapping("list")
    public List<User> list() {
//        userService.queryAllByLimit(1,1);
        return userService.queryUserList();
    }

    /**
     * 修改密码
     *
     * @param id          当前用户id
     * @param newPassword 提交上来的新密码
     * @return
     */
    @RequestMapping("updatePassword")
    public String updatePasswordById(@RequestParam Integer id,
                                     @RequestParam String newPassword
    ) {
        User user = new User();
        user.setUserpassword(newPassword);
        userService.update(user);
        return "redirect:/toXinXi"; //修改完重定向到原来页面
    }

    /**
     * 修改用户基本信息
     *
     * @param user 用户修改后提交的
     * @return
     */
    @RequestMapping("updateJiBenXinXi")
    public String updateJiBenXinXi(@RequestParam User user) {
        userService.update(user);
        return "redirect:/toXinXi";
    }

}
